#ifndef _FPOD_H_
#define _FPOD_H_

#include <string>
#include <vector>
#include "FConstants.h"
#include "FType.h"


/**
 * FPod is the read/write fcode representation of sys::Pod.  It's main job in
 * life is to manage all the pod-wide constant tables for names, literals,
 * type/slot references and type/slot definitions.
 */
class FPod
{
public:
  void load(const std::string& podPath);

private:
  void loadConstants(FPodReader& reader);
  void loadNames(FPodReader& reader);
  void loadTypes(FPodReader& reader);

  FConstants m_constants;
  std::vector<std::string> m_names;
  std::vector<FType> m_types;
};


#endif
